package cn.e4j.core.common.exception;

import cn.e4j.model.exception.AbstractBaseExceptionEnum;

/**
 * 所有业务异常的枚举
 *
 * @author wenchuan.li
 * @date 2017/11/12 15:04
 */
public enum BizExceptionEnum implements AbstractBaseExceptionEnum {

    /**
     * 账户问题
     */
    USER_ALREADY_REG(301, "该用户已经注册"),
    USER_NOT_EXISTED(302, "没有此用户"),
    ACCOUNT_FREEZED(303, "账号被冻结"),
    OLD_PWD_NOT_RIGHT(304, "原密码不正确"),
    TWO_PWD_NOT_MATCH(305, "两次输入密码不一致"),
    USER_REQUEST_ERROR(306, "账号密码错误"),
    USER_COUNT_HAS_MAX(307, "用户数已达上限"),

    /**
     * 字典
     */
    DICT_EXISTED(400, "字典已经存在"),
    ERROR_CREATE_DICT(500, "创建字典失败"),
    ERROR_WRAPPER_FIELD(500, "包装字典属性失败"),
    ERROR_CODE_EMPTY(500, "字典类型不能为空"),

    /**
     * 邮件
     */
    MAIL_EXISTED(400,"邮件参数已存在"),
    MAIL_ENCRYPT_FAILED(500,"系统错误，邮件参数更新失败"),

    /**
     * 树问题
     */
    TREE_ERROR(306,"树ID生成器生成节点ID参数错误"),
    TREE_NO_SPACE(500,"树ID生成器本级节点号源用尽"),
    /**
     * 模块问题
     */
    MODULE_ALREADY_REG(301, "该模块已经存在"),
    MODULE_DELETE_ERROR(500,"该模块存在子节点，需先删除子节点"),

    /**
     * IQS问题
     */
    LPA12_ALREADY_REG(301, "操作失败，分层审核表已经存在。"),
    LPA12_CANTFIND(500, "操作失败，该资料不存在。"),


    /**
     * 组织问题
     */
    ORG_ALREADY_REG(301, "该组织已经存在"),
    ORG_DELETE_ERROR(500,"该组织存在子部门，需先删除子部门"),

    /**
     * 文件上传
     */
    FILE_READING_ERROR(400, "FILE_READING_ERROR!"),
    FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"),
    UPLOAD_ERROR(500, "上传图片出错"),

    /**
     * 权限和数据问题
     */
    DB_RESOURCE_NULL(400, "数据库中没有该资源"),
    NO_PERMITION(405, "权限异常"),
    REQUEST_INVALIDATE(400, "请求数据格式不正确"),
    INVALID_KAPTCHA(400, "验证码不正确"),
    CANT_DELETE_ADMIN(600, "不能删除超级管理员"),
    CANT_FREEZE_ADMIN(600, "不能冻结超级管理员"),
    CANT_CHANGE_ADMIN(600, "不能修改超级管理员角色"),



    /**
     * 错误的请求
     */
    MENU_PCODE_COINCIDENCE(400, "菜单编号和副编号不能一致"),
    EXISTED_THE_MENU(400, "菜单编号重复，不能添加"),
    DICT_MUST_BE_NUMBER(400, "字典的值必须为数字"),
    REQUEST_NULL(400, "请求有错误"),
    SESSION_TIMEOUT(400, "会话超时"),
    SERVER_ERROR(500, "服务器异常"),

    /**
     * token异常
     */
    TOKEN_EXPIRED(700, "token过期"),
    TOKEN_ERROR(700, "token验证失败"),

    /**
     * 签名异常
     */
    SIGN_ERROR(700, "签名验证失败"),

    /**
            * 参数键重复
     */
    EXISTED_THE_PARAMS(400, "参数键重复"),
    /**
     * 参数键NULL值
     */
    NULL_THE_PARAMS(400, "参数键存在NULL值"),
    /**
     * 参数键空值
     */
    EMPYT_THE_PARAMS(400, "导入空数据"),
    /**
     *
     * 用户已建立
     */
    EXISTED_THE_USER(400, "用户已建立"),

    /**
     * 其他
     */
    AUTH_REQUEST_ERROR(400, "账号密码错误"),

    CODE_1000(1000, "此用户已被其他管理员审核"),
    CODE_1001(1001, ""),
    CODE_1002(1002, ""),
    CODE_1003(1003, ""),
    CODE_1004(1004, ""),
    CODE_1005(1005, ""),
    CODE_1006(1006, ""),
    CODE_1007(1007, ""),
    CODE_1008(1008, ""),
    CODE_1009(1009, ""),
    CODE_1010(1010, ""),
    CODE_1011(1011, ""),
    CODE_1012(1012, "");


    BizExceptionEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    private Integer code;

    private String message;

    @Override
    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
